home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / progs / Netobj / netobj / t2.z / FormHandlerComp.nfx (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-29  |  5.8 KB  |  306 lines

  1. public class FormHandlerComp extends ComponentApp {
  2.    DAssetManager cam;
  3.    DDrawFormButton cdp;
  4.    int ImageID;
  5.    int perlScriptID;
  6.    String SubmitName;
  7.    int SuccessURL;
  8.    int ErrorURL;
  9.    String outputFile;
  10.    boolean UnixWindows;
  11.    String PerlPath;
  12.    String storageDir;
  13.    String codeBase;
  14.    static final int MAXASSET = 50;
  15.    boolean published;
  16.    boolean[] reqField;
  17.    int reqFieldCount;
  18.    int[] assetControl;
  19.    int assetCount;
  20.    int tAssetCount;
  21.    int actionCGIAsset;
  22.  
  23.    public String PropertyListener(String var1, String var2, int var3, int var4, IDInspector var5) {
  24.       if (var3 == 1) {
  25.          if (var1.compareTo("Button Name") == 0) {
  26.             return this.SubmitName;
  27.          }
  28.  
  29.          if (var1.compareTo("Success URL") == 0) {
  30.             return Integer.toString(this.SuccessURL);
  31.          }
  32.  
  33.          if (var1.compareTo("Error URL") == 0) {
  34.             return Integer.toString(this.ErrorURL);
  35.          }
  36.  
  37.          if (var1.compareTo("Output File") == 0) {
  38.             return this.outputFile;
  39.          }
  40.  
  41.          if (var1.compareTo("Publish to") == 0) {
  42.             if (!this.UnixWindows) {
  43.                return "1";
  44.             }
  45.  
  46.             return "0";
  47.          }
  48.  
  49.          if (var1.compareTo("Perl Path for Unix") == 0) {
  50.             return this.PerlPath;
  51.          }
  52.  
  53.          for(int var6 = 0; var6 < this.countElement(); ++var6) {
  54.             if (var1.compareTo(this.getFieldName(var6)) == 0) {
  55.                if (!this.reqField[var6]) {
  56.                   return "1";
  57.                }
  58.  
  59.                return "0";
  60.             }
  61.          }
  62.       } else {
  63.          if (var1.compareTo("Button Name") == 0) {
  64.             this.SubmitName = var2;
  65.             this.cdp.setText(this.SubmitName);
  66.          } else if (var1.compareTo("Success URL") == 0) {
  67.             this.SuccessURL = Integer.parseInt(var2, 10);
  68.          } else if (var1.compareTo("Error URL") == 0) {
  69.             this.ErrorURL = Integer.parseInt(var2, 10);
  70.          } else if (var1.compareTo("Output File") == 0) {
  71.             this.outputFile = var2;
  72.          } else if (var1.compareTo("Publish to") == 0) {
  73.             if (var2.compareTo("0") == 0) {
  74.                this.UnixWindows = true;
  75.             } else {
  76.                this.UnixWindows = false;
  77.             }
  78.          } else if (var1.compareTo("Perl Path for Unix") == 0) {
  79.             this.PerlPath = var2;
  80.          }
  81.  
  82.          for(int var8 = 0; var8 < this.countElement(); ++var8) {
  83.             if (var1.compareTo(this.getFieldName(var8)) == 0) {
  84.                if (var2.compareTo("0") == 0) {
  85.                   this.reqField[var8] = true;
  86.                } else {
  87.                   this.reqField[var8] = false;
  88.                }
  89.             }
  90.          }
  91.       }
  92.  
  93.       return "";
  94.    }
  95.  
  96.    int max(int var1, int var2) {
  97.       return var1 > var2 ? var1 : var2;
  98.    }
  99.  
  100.    public void onCopy() {
  101.       this.SubmitName = new String(this.SubmitName);
  102.       this.outputFile = new String(this.outputFile);
  103.       this.PerlPath = new String(this.PerlPath);
  104.       this.storageDir = new String(this.storageDir);
  105.       this.codeBase = new String(this.codeBase);
  106.       boolean[] var1 = new boolean[this.reqFieldCount];
  107.  
  108.       for(int var2 = 0; var2 < this.reqFieldCount; ++var2) {
  109.          var1[var2] = this.reqField[var2];
  110.       }
  111.  
  112.       this.reqField = var1;
  113.  
  114.       for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  115.          this.cam.CopyAsset(this.assetControl[this.tAssetCount]);
  116.       }
  117.  
  118.    }
  119.  
  120.    String cleanPath(String var1) {
  121.       String var2 = new String(var1);
  122.       String var3 = new String(var1);
  123.       String var4 = new String(var1);
  124.       var1.length();
  125.       if (var2.substring(0, 3).compareTo("../") == 0) {
  126.          var1 = "../" + var1;
  127.       } else if (var3.substring(0, 7).compareTo("../html") == 0) {
  128.          var1 = "../" + var1;
  129.       } else if (var4.substring(0, 2).compareTo("./") == 0) {
  130.          var1 = "../." + var1;
  131.       }
  132.  
  133.       return var1;
  134.    }
  135.  
  136.    int countElement() {
  137.       IDLayout var1 = this.cdp.getLayout();
  138.       int var2 = 1;
  139.       int var4 = 0;
  140.  
  141.       while(true) {
  142.          String var5 = new String() + var2;
  143.          if (!var1.IsElementName(var5)) {
  144.             --var2;
  145.             if (this.reqField == null) {
  146.                this.reqField = new boolean[var2];
  147.  
  148.                for(int var9 = 0; var9 < var2; ++var9) {
  149.                   this.reqField[var9] = false;
  150.                }
  151.  
  152.                this.reqFieldCount = var2;
  153.                return var2;
  154.             } else {
  155.                int var10 = this.min(this.reqFieldCount, var2);
  156.                boolean[] var3 = this.reqField;
  157.                this.reqField = new boolean[var2];
  158.  
  159.                for(var4 = 0; var4 < var10; ++var4) {
  160.                   this.reqField[var4] = var3[var4];
  161.                }
  162.  
  163.                if (this.reqFieldCount != this.max(this.reqFieldCount, var2)) {
  164.                   while(var4 < this.max(this.reqFieldCount, var2)) {
  165.                      this.reqField[var4] = false;
  166.                      ++var4;
  167.                   }
  168.                }
  169.  
  170.                this.reqFieldCount = var2;
  171.                return var2;
  172.             }
  173.          }
  174.  
  175.          ++var2;
  176.       }
  177.    }
  178.  
  179.    String getFieldName(int var1) {
  180.       int var2 = var1 + 1;
  181.       return "Required field " + var2;
  182.    }
  183.  
  184.    public String onInstall(DAssetManager var1, String var2) {
  185.       this.cam = var1;
  186.       this.codeBase = var2;
  187.       return "Form Handler";
  188.    }
  189.  
  190.    protected void finalize() {
  191.       if (this.published) {
  192.          for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  193.             this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
  194.          }
  195.       }
  196.  
  197.    }
  198.  
  199.    public void onPublish(DAssetManager var1, int var2) {
  200.       IDLayout var3 = this.cdp.getLayout();
  201.       this.countElement();
  202.       DFile var4 = new DFile();
  203.       DFile var5 = new DFile();
  204.       new DFile();
  205.       String var6 = this.codeBase;
  206.       new DMessageBox();
  207.       if (this.published) {
  208.          for(this.tAssetCount = 0; this.tAssetCount < this.assetCount; ++this.tAssetCount) {
  209.             this.cam.RemoveAsset(this.assetControl[this.tAssetCount]);
  210.          }
  211.       }
  212.  
  213.       this.assetCount = 0;
  214.       this.published = true;
  215.       this.cdp.setHTMLBefore(this.getHiddenInsert(var2));
  216.       if (this.UnixWindows) {
  217.          this.actionCGIAsset = this.cam.AddAsset(var6 + "Forms\\cgi-bin-NT\\Forms-Handler.cgi", "CGI\u0000", "assets\\cgi-bin");
  218.          this.assetControl[this.assetCount] = this.actionCGIAsset;
  219.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  220.          this.assetControl[this.assetCount] = this.cam.AddAsset(var6 + "Forms\\cgi-bin-NT\\Buf.dll", "CGI\u0000", "assets\\cgi-bin");
  221.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  222.       } else {
  223.          this.assetControl[this.assetCount] = this.cam.AddAsset("assets\\webdata\\", "SubDir\u0000", "");
  224.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 451);
  225.          var5.Open(var6 + "Forms\\cgi-bin-Unix\\Forms-Handler.cgi", 0);
  226.          var4.Open(var6 + "Forms\\cgi-bin\\Forms-Handler.cgi", 4097);
  227.          var4.WriteString("#!" + this.PerlPath + "\n", -1);
  228.          var4.WriteString("$STORAGEDIR=\"" + this.storageDir + "\";", -1);
  229.          var4.WriteString(var5.ReadString(10000), -1);
  230.          var4.Close();
  231.          var5.Close();
  232.          this.actionCGIAsset = this.cam.AddAsset(var6 + "Forms\\cgi-bin\\Forms-Handler.cgi", "CGI\u0000", "assets\\cgi-bin");
  233.          this.assetControl[this.assetCount] = this.actionCGIAsset;
  234.          this.cam.SetPublishAssetMode(this.assetControl[this.assetCount++], 453);
  235.       }
  236.  
  237.       String var7 = this.cam.GetAssetRelativeLocation(this.actionCGIAsset, var2, 0);
  238.       var3.setFormAction(var7);
  239.    }
  240.  
  241.    public void onDrop(IDLayout var1, IDRect var2, int var3) {
  242.       if (var3 == 1) {
  243.          this.assetControl = new int[50];
  244.          int var4 = 0;
  245.  
  246.          do {
  247.             this.assetControl[var4] = 0;
  248.             ++var4;
  249.          } while(var4 < 50);
  250.  
  251.          new DFile();
  252.          this.SubmitName = "Submit";
  253.          this.outputFile = "webinfo";
  254.          this.UnixWindows = true;
  255.          this.PerlPath = "/usr/local/bin/perl";
  256.          this.storageDir = "../webdata/";
  257.          this.cdp = new DDrawFormButton();
  258.          this.cdp.setText(this.SubmitName);
  259.          var1.AddObject(this.cdp);
  260.          this.cdp.SetPositionRect(var2.getLeft(), var2.getTop(), var2.getRight(), var2.getBottom());
  261.       }
  262.    }
  263.  
  264.    int min(int var1, int var2) {
  265.       return var1 < var2 ? var1 : var2;
  266.    }
  267.  
  268.    public void onInspect(CStringArray var1, CStringArray var2) {
  269.       var1.Set("Button Name");
  270.       var2.Set("String\u0000");
  271.       var1.Set("Success URL");
  272.       var2.Set("Link\u0000");
  273.       var1.Set("Error URL");
  274.       var2.Set("Link\u0000");
  275.       var1.Set("Output File");
  276.       var2.Set("String\u0000");
  277.       var1.Set("Publish to");
  278.       var2.Set("Set(Windows|Unix)");
  279.       var1.Set("Perl Path for Unix");
  280.       var2.Set("String\u0000");
  281.       int var3 = this.countElement();
  282.  
  283.       for(int var4 = 0; var4 < var3; ++var4) {
  284.          var1.Set(this.getFieldName(var4));
  285.          var2.Set("Set(True|False)");
  286.       }
  287.  
  288.    }
  289.  
  290.    String getHiddenInsert(int var1) {
  291.       String var2 = "<INPUT TYPE=\"HIDDEN\" NAME=\"success\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.SuccessURL, var1, 1)) + "\">\n";
  292.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"error\" VALUE=\"" + this.cleanPath(this.cam.GetAssetLocation(this.ErrorURL, var1, 1)) + "\">\n";
  293.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"fields\" VALUE=\"" + this.reqFieldCount + "\">\n";
  294.       var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"" + this.outputFile + "\">\n";
  295.  
  296.       for(int var4 = 0; var4 < this.reqFieldCount; ++var4) {
  297.          if (this.reqField[var4]) {
  298.             int var3 = var4 + 1;
  299.             var2 = var2 + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + var3 + "a\" VALUE=\"TRUE\">\n";
  300.          }
  301.       }
  302.  
  303.       return var2;
  304.    }
  305. }
  306.